#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "file_attente_personnel.h"
void ajouter_personnel_attente(FILE* FICHE_PERSONNEL_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;
    long int matricule;
    int etat ;
    FICHE_PERSONNEL_ATTENTE = fopen ("personnel_attente.txt" , "a" );
    printf("Donner le nom\n");
    scanf("%s",nom);
    printf("Donner le prenom\n");
    scanf("%s",prenom);
    printf("Donner l'age\n");
    scanf("%d",&age);
    printf("Donner le cin\n");
    scanf("%ld",&cin);
    printf("Donner la matricule\n");
    scanf("%ld",&matricule);
    etat=0 ;
    fprintf(FICHE_PERSONNEL_ATTENTE, "%20s %20s %3d %8ld %6ld %1d\n",nom,prenom,age,cin,matricule,etat);

    fclose(FICHE_PERSONNEL_ATTENTE);
}

void afficher_personnel_attente(FILE* FICHE_PERSONNEL_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;
    long int matricule;
    int etat ;
    int n ;
    n=nbre_personnel_attente(FICHE_PERSONNEL_ATTENTE);
    FICHE_PERSONNEL_ATTENTE = fopen("personnel_attente.txt", "r");
    if(FICHE_PERSONNEL_ATTENTE==NULL)
    {
        printf("\n Impossible d'ouvrir le fichier\n");
    }
    else
    {
        if(n==0)
        {
            printf("\n La liste de personnels en attente est vide\n");
        }
        else
        {

            while (!feof(FICHE_PERSONNEL_ATTENTE))
            {
                fscanf(FICHE_PERSONNEL_ATTENTE, "%s\n",nom);
                fscanf(FICHE_PERSONNEL_ATTENTE, "%s\n",prenom);
                fscanf(FICHE_PERSONNEL_ATTENTE, "%d\n",&age);
                fscanf(FICHE_PERSONNEL_ATTENTE, "%ld\n",&cin);
                fscanf(FICHE_PERSONNEL_ATTENTE, "%ld\n",&matricule);
                fscanf(FICHE_PERSONNEL_ATTENTE, "%d\n",&etat);
                printf("nom=%s prenom=%s age=%d cin=%ld matricule=%ld etat=%d\n",nom,prenom,age,cin,matricule,etat);
            }
        }
        fclose(FICHE_PERSONNEL_ATTENTE);
    }
}
void initialiser_personnel_attente(FILE* FICHE_PERSONNEL_ATTENTE)
{
    FICHE_PERSONNEL_ATTENTE = fopen ("personnel_attente.txt" , "w" );

    fclose(FICHE_PERSONNEL_ATTENTE);


}

void recherche_personnel_attente(FILE *FICHE_PERSONNEL_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;
    long int matricule;
    int etat ;
    int test ;
    int matr ;
    FICHE_PERSONNEL_ATTENTE = fopen("personnel_attente.txt", "r");
    test = 0;
    printf("donner le matricule a chercher: ");
    scanf("%d",&matr);
    while ( !feof(FICHE_PERSONNEL_ATTENTE) && test == 0)
    {

        fscanf(FICHE_PERSONNEL_ATTENTE, "%s\n",nom);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%s\n",prenom);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%d\n",&age);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%ld\n",&cin);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%ld\n",&matricule);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%d\n",&etat);

        if (matricule == matr)
        {
            test=1;

        }
    }
    if (test == 0) printf("ce personnel est inexistant");
    else
    {
        printf("\n ce personnel existe\n") ;
        printf("nom=%s prenom=%s age=%d cin=%ld matricule=%ld etat=%d\n",nom,prenom,age,cin,matricule,etat);
    }

    fclose(FICHE_PERSONNEL_ATTENTE);
}
void menu_personnel_attente(FILE* FICHE_PERSONNEL_ATTENTE)
{

    int i;
    FICHE_PERSONNEL_ATTENTE = fopen("personnel_attente.txt", "a");

    printf("\n1:initialiser personnel attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("2:afficher personnel attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("3:ajouter personnel attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("4:supprimer personnel attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("5:rechercher personnel attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("6:nombre personnel attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("taper autre bouton pour quitter ce menu \n");
    printf("*****************************************\n");
    printf("*****************************************\n");



    printf ("donner votre choix \n");
    scanf("%d",&i);

    switch (i)
    {
    case 1:
        initialiser_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        menu_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        break;
    case 2:
        afficher_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        menu_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        break;
    case 3:
        ajouter_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        menu_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        break;
    case 4:
        supprimer_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        menu_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        break;
    case 5:
        recherche_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        menu_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        break;
    case 6:
        nbre_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        menu_personnel_attente(FICHE_PERSONNEL_ATTENTE);
        break;
    default :

        break;
    }
    fclose(FICHE_PERSONNEL_ATTENTE);
}

void supprimer_personnel_attente(FILE * FICHE_PERSONNEL_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;
    long int matricule;
    int etat ;
    int matr ;
    FILE *tmp ;
    FICHE_PERSONNEL_ATTENTE = fopen("personnel_attente.txt", "r");
    tmp = fopen("tmp.txt", "w");

    printf("donner le matricule a supprimer: ");
    scanf("%d",&matr);

    while ( !feof(FICHE_PERSONNEL_ATTENTE) )
    {

        fscanf(FICHE_PERSONNEL_ATTENTE, "%s\n",nom);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%s\n",prenom);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%d\n",&age);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%ld\n",&cin);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%ld\n",&matricule);
        fscanf(FICHE_PERSONNEL_ATTENTE, "%d\n",&etat);
        if (matricule != matr)
        {

            fprintf(tmp, "%20s %20s %3d %8ld %6ld %1d\n",nom,prenom,age,cin,matricule,etat);

        }
    }

    remove("personnel_attente.txt");
    rename("tmp.txt","personnel_attente.txt");

    fclose(FICHE_PERSONNEL_ATTENTE);
    fclose (tmp);
    printf("suppression terminee: ");

}
int nbre_personnel_attente(FILE * FICHE_PERSONNEL_ATTENTE)
{

    char nom[20];
    char prenom[20];
    int age;
    long int cin;
    long int matricule;
    int etat ;

    int nbpa = 0;
    FICHE_PERSONNEL_ATTENTE = fopen("personnel_attente.txt", "r");
    if (FICHE_PERSONNEL_ATTENTE==NULL)
    {
        printf("\n Impossible d'ouvrir le fichier\n");
    }
    else
    {
        while(fscanf(FICHE_PERSONNEL_ATTENTE,"%s %s %d %ld %ld %d",nom,prenom,&age,&cin,&matricule,&etat)!=EOF)
        {
            nbpa++;
        }
        fclose(FICHE_PERSONNEL_ATTENTE);
    }
    printf("\n Le nombre de personnels en attente est %d : \n",nbpa);
    return nbpa;
}


